#pragma once
#include "./render/TextureLoader.h"
#include "./sound/SoundLoader.h"

/**
======================================
An interface for the Virtual File System
======================================
*/
class IResourceManagement
{
public:
    IResourceManagement(void){};

    /** Initialize the Virtual File System */
    virtual bool Init()=0;
    virtual void Shutdown()=0;

    /** Load Images */
    virtual Image LoadSingleImage(const std::string &s)=0;
    virtual Image LoadImages(const std::string &s, int r, int c)=0;

	/** Load a sound file */
	virtual SoundSource* LoadSound( const std::string &s )=0;

    /** Load a zip archive into memory */
    virtual void LoadArchive( const std::string &zip )=0;

    /** Number of sounds in cache */
    virtual int Sounds()=0;
    /** Number of textures in cache */
    virtual int Textures()=0;
public:
    virtual ~IResourceManagement(void){};
};
